/*******************************************************************************************************************

			NOMBRE DEL PROGRAMA: MODULADOR PWM CON ADC
			AUTORES:      HECTOR FABIO MOLINA
				      DELIO ALEXANDER IDROBO
			NOMBRE DEL PROYECTO: CONTROL Y SUPERVISION DE UN MOTOREDUCTOR DC CON ENCODER ABSOLUTO(GRAY)
			

			
******************************************************************************************************************/

#include <p18f452.h>
#include <adc.h>                                                   
#include "config.h"
unsigned int i,ADC=0;
int conversion (void);
void INT_ADC (void);
int conversion(void)
{	
	unsigned int ADC=0;
	ADCON0	=	0x85;
	while (ADCON0==0x85)
	ADC	=	ADRESH;
	ADC	= 	ADC	<<	8;
	ADC	=	ADC	+	ADRESL;
	ADC	=	ADC	&	0x03FF;
	return 	ADC;	
}
//129,137,145,153,161,169,177,185
void INT_ADC(void)
{
									//Inicializa ADC Puerto a como entrada analogica
	ADCON0=0x81;
	ADCON1=0xC2;							//SE CONFIGURA LAS ENTRADAS ANALOGICAS DEL PUERTO A 										COMO ENTRDAS ANALOGICAS
	TRISA=0xFF;							//Y LAS ENTRADAS DEL PUERTO B QUEDAN COMO ENTRADAS 										DIGITALES
}

//*******************************************************************PRINCIPAL*******************************************************************//

void main(void)
{
	INT_ADC();	
	TRISA = 255;               
	TRISC	=	0;						//RC2/CCP1 salida PWM
	TRISD	=	0;						//INDICADOR DE VELOCIDAD LEDS
	TRISE=7;                         
	PR2	=	255;						//Periodo de 4ms
									//Configuracion PWM
	CCP1CON	=	12;						//Modo PWM
	T2CON	=	7;						//Habilitacion del TMR2 con predivisor de 16
	CCP2CON =   15;
	CCPR1L	=	0;
	CCPR2L	=	0;
	while(1)
	{
		i = conversion();
		while(PORTEbits.RE0  == 0)	
		{
			SetDCPWM1(0);		
		}
		if ( PORTEbits.RE1 == 0)
		{
			SetDCPWM1(i);		//Variamos la pwm con el valor recibido del puerto A
			PORTD=1;			//GIRO IZQUIERDO
		}
		if ( PORTEbits.RE1 == 1)
		{
			SetDCPWM1(i);		//Variamos la pwm con el valor recibido del puerto A
			PORTD=2;			//GIRO DERECHO
		}
	

		}
} 




